home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / src / swtools / trubasic / rolldemos / demos / rgb / unfold.tru < prev    next >
Text File  |  1994-08-02  |  3KB  |  134 lines

  1. ! True BASIC - Demo for Silicon Graphics
  2. ! uses doublebuffering and rgb-mode Gourard shading
  3.  
  4. CALL tw_wset_size(0,750,750)
  5. call tw_wset_title(0,"unfold")
  6. dim pts(3,2), clrs(3)
  7. dim pts2(4,2), clrs2(4)
  8.  
  9. set mode "doublebuffer"
  10. ask mode m$
  11. if m$<>"DOUBLEBUFFER" then
  12.     set mode "text"
  13.     print "Doublebuffering only supported for Silicon Graphics GL version."
  14.     stop
  15. end if
  16. set mode "rgb"
  17. clear
  18. call swapbuffers(1)
  19. set text justify "center","bottom"
  20. set color mix (18) 172/255,0,1
  21.  
  22. ! polygon vertices 
  23. let pts(1,1)=.1
  24. let pts(1,2)=.1
  25. let pts(2,1)=.9
  26. let pts(2,2)=.1
  27. let pts(3,1)=.5
  28. let pts(3,2)=.9
  29.  
  30. ! colors associated with vertices (does not effect mat plot)
  31. let clrs(1)=2
  32. let clrs(2)=3
  33. let clrs(3)=4
  34.  
  35. ! square
  36. let pts2(1,1)=.35
  37. let pts2(1,2)=.1 
  38. let pts2(2,1)=.65 
  39. let pts2(2,2)=.1 
  40. let pts2(3,1)=.65 
  41. let pts2(3,2)=.55
  42. let pts2(4,1)=.35
  43. let pts2(4,2)=.55
  44.  
  45. ! colors associated with vertices (does not effect mat plot)
  46. let clrs2(1)=2
  47. let clrs2(2)=3
  48. let clrs2(3)=4
  49. let clrs2(4)=5
  50.  
  51. let n=setfont("Courier")
  52. let n=setfontsize(30)
  53. let n=setfontstyle("BoldOblique")
  54.  
  55. when error in
  56. do
  57.    clear
  58.    draw hexagon
  59.    call swapbuffers(1)
  60.    set color "white"
  61.    pause 1
  62.    get mouse x,y,state
  63.    if state<>0 then stop
  64.    for i=0 to 2 step .05 
  65.     clear
  66.     ! True BASIC logo
  67.     draw logo1(.55)
  68.  
  69.     draw hexagon with shift(-i,0)
  70.     draw hexagon with shift(0,-i)
  71.     draw hexagon with shift(i,i)
  72.     draw hexagon with rotate(i)
  73.     draw hexagon with shift(i,0)
  74.     draw hexagon with shift(0,i)
  75.     call swapbuffers(1)
  76.    next i
  77.    pause 1
  78.    get mouse x,y,state
  79.    if state<>0 then stop
  80.    call dropout
  81.    for i=1.3 to 0 step -.03
  82.     clear
  83.     draw hexagon with shift(-i,0)
  84.     draw hexagon with shift(i,i)
  85.     draw hexagon with rotate(i)
  86.     draw hexagon with shift(i,0)
  87.     draw hexagon with shift(0,i)
  88.         draw logo(i)
  89.     call swapbuffers(1)
  90.    next i
  91.    get mouse x,y,state
  92.    if state<>0 then stop
  93. loop
  94. use
  95.   set mode "text"
  96.   print extext$,exline$
  97. end when
  98. get key k
  99.  
  100. PICTURE hexagon
  101.     call gshade(pts,clrs)
  102. END PICTURE
  103.  
  104. PICTURE logo1(y)
  105.     let pts2(3,2)=y  
  106.     let pts2(4,2)=y  
  107.     call gshade(pts2,clrs2)
  108.     plot text, at .5,y: "True BASIC"
  109. END PICTURE
  110.  
  111.  
  112. ! text descends on screen decreasing its red intensity
  113. sub dropout
  114.    for i=.55 to .05 step -.05
  115.     clear
  116.     set color mix(18) i,0,1
  117.         set color 18
  118.     draw logo1(i)
  119.     call swapbuffers(1)
  120.    next i
  121.    clear
  122.    draw logo(.5)
  123.    call swapbuffers(1)
  124.    set color "white"
  125. end sub
  126.  
  127. ! displays a logo using the red intensity "dr"
  128. PICTURE logo(dr)
  129.    set color mix (18) dr,0,dr 
  130.    set color 18    
  131.    plot text, at .5,.05: "True BASIC"
  132. END PICTURE
  133. end
  134.